#ifndef GAME_H
#define GAME_H

#include "Player.h"
#include "Room.h"
#include <vector>

class Game {
private:
    Player* player;
    std::vector<Room*> rooms;
    Room* currentRoom;
    bool gameOver;
    bool playerWon;

    // Initialize game components
    void initRooms();
    void connectRooms();
    void initItems();
    void initEnemies();
    
    // Process player commands
    void processCommand(int choice);
    void movePlayer(const std::string& direction);
    void takeItem(size_t index);
    void attackEnemy(size_t index);
    void showInventory() const;
    void showStats() const;
    
    // Display menu and get player's choice
    int showMenu() const;
    
    // Check game over conditions
    void checkGameOver();

public:
    // Constructor and destructor
    Game();
    ~Game();
    
    // Run game main loop
    void run();
    
    // Game state queries
    bool isGameOver() const;
    bool hasPlayerWon() const;
};

#endif // GAME_H 